﻿using System.Collections.Generic;

namespace Mnk.Merger.Code.Repository
{
    interface IRepositoryFacade
    {
        string GetLatestMergedRevisions(string workingDirectory, string mergeUrl);
        SvnInfoEntry GetInfo(string workingDirectory);
        IList<string> GetMergedRevisions(string workingDirectory, string mergeUrl);
        IList<SvnLogEntry> GetCommits(string mergeUrl);
        ToMergeInfo GetRevisionToMerge(string workingDirectory, string mergeUrl);
        bool Merge(string workingDirectory, string mergeUrl, string revision);
        void Commit(string workingDirectory, string mergeUrl, string revisions);
        void Update(string workingDirectory);
        void Revert(string workingDirectory);
        void CleanUp(string workingDirectory);
        void Switch(string workingDirectory, string targetSourceUrl);
        IDictionary<string, List<string>> GetChangedFiles(string url, string revision, bool additionalFiltering = true);
    }
}
